home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-03-25 | 1008 b | 62 lines | [TEXT/Pyth] |
- # Module 'maccache'
- #
- # Maintain a cache of listdir(), isdir(), isfile() or exists() outcomes.
- # XXX Should merge with module statcache
-
- import os
-
-
- # The cache.
- # Keys are absolute pathnames;
- # values are 0 (nothing), 1 (file) or [...] (dir).
- #
- cache = {}
-
-
- # Current working directory.
- #
- cwd = os.getcwd()
-
-
- # Constants.
- #
- NONE = 0
- FILE = 1
- LISTTYPE = type([])
-
- def _stat(name):
- name = os.path.join(cwd, name)
- if cache.has_key(name):
- return cache[name]
- if os.path.isfile(name):
- cache[name] = FILE
- return FILE
- try:
- list = os.listdir(name)
- except:
- cache[name] = NONE
- return NONE
- cache[name] = list
- if name[-1:] == ':': cache[name[:-1]] = list
- else: cache[name+':'] = list
- return list
-
- def isdir(name):
- st = _stat(name)
- return type(st) == LISTTYPE
-
- def isfile(name):
- st = _stat(name)
- return st == FILE
-
- def exists(name):
- st = _stat(name)
- return st <> NONE
-
- def listdir(name):
- st = _stat(name)
- if type(st) == LISTTYPE:
- return st
- else:
- raise RuntimeError, 'list non-directory'
-